#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
简易HTTP服务器脚本
用于启动实时数据监控系统的本地预览服务器
"""

import http.server
import socketserver
import webbrowser
import os
import sys
import time

# 服务器端口
PORT = 8000

# 项目根目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    """自定义HTTP请求处理器，添加日志和CORS支持"""
    
    # 启用CORS
    def end_headers(self):
        self.send_header('Access-Control-Allow-Origin', '*')
        super().end_headers()
    
    # 自定义日志格式
    def log_message(self, format, *args):
        print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {self.client_address[0]} - {format % args}")

def start_server():
    """启动HTTP服务器"""
    try:
        # 切换到项目根目录
        os.chdir(BASE_DIR)
        
        # 创建服务器
        handler = CustomHTTPRequestHandler
        httpd = socketserver.TCPServer(("", PORT), handler)
        
        print("=" * 60)
        print("实时数据监控系统 - 本地预览服务器")
        print("=" * 60)
        print(f"服务器已启动，正在监听端口: {PORT}")
        print(f"访问地址: http://localhost:{PORT}")
        print(f"项目目录: {BASE_DIR}")
        print("\n提示:")
        print("1. 按 Ctrl+C 停止服务器")
        print("2. 请勿关闭此窗口，否则服务器将停止运行")
        print("=" * 60)
        
        # 尝试自动打开浏览器
        try:
            webbrowser.open(f'http://localhost:{PORT}', new=2)
            print("正在尝试自动打开浏览器...")
        except Exception as e:
            print(f"无法自动打开浏览器: {e}")
        
        # 启动服务器
        httpd.serve_forever()
        
    except KeyboardInterrupt:
        print("\n正在停止服务器...")
        httpd.shutdown()
        print("服务器已停止")
    except Exception as e:
        print(f"启动服务器时出错: {e}")
        sys.exit(1)

if __name__ == "__main__":
    start_server()